package com.fezs.common.utils;

import com.fezs.common.exception.ArgumentException;
import com.fezs.common.exception.ServerException;

import java.util.Collection;
import java.util.Map;

/**
 * 断言类
 *
 * @author zhukai
 * @since 2022/8/18
 */
public class AssertUtils {

    private AssertUtils() {}

    public static void isTrue(Boolean obj, String msg) {
        if (obj == null || !obj) {
            throw new ArgumentException(msg);
        }
    }

    public static void notEmpty(String obj, String msg) {
        if (obj == null || "".equals(obj)) {
            throw new ArgumentException(msg);
        }
    }

    public static void notEmpty(Collection<?> list, String msg) {
        if (list == null || list.isEmpty()) {
            throw new ArgumentException(msg);
        }
    }

    public static void notEmpty(Map<?, ?> map, String msg) {
        if (map == null || map.isEmpty()) {
            throw new ArgumentException(msg);
        }
    }

    public static void notNull(Object obj, String msg) {
        if (obj == null) {
            throw new ArgumentException(msg);
        }
    }

    /**
     * 乐观锁更新成功断言
     */
    public static void optimisticUpdateSuccess(boolean flag) {
        if (!flag) {
            throw new ServerException("更新失败! 请稍后重新尝试!");
        }
    }

    /**
     * 乐观锁更新成功断言
     */
    public static void optimisticUpdateSuccess(int updateNum) {
        if (updateNum < 1) {
            throw new ServerException("更新失败! 请稍后重新尝试!");
        }
    }

}
